
package bd;
import classes.*;
import java.sql.*;
import java.util.*;

public class AcessoBD {


    public static boolean salvar(Acesso acesso,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ACESSO(NULL,?,?,NULL,NULL,?)}");
            //procedure.setInt(1, (Integer)null);
            procedure.setString(1,acesso.getDescr());
            procedure.setInt(2, usuarioLogado.getId());
            //procedure.setInt(4,(Integer)null);
            procedure.setString(3,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean alterar(Acesso acesso,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ACESSO(?,?,NULL,?,?,?)}");
            procedure.setInt(1, acesso.getId());
            procedure.setString(2,acesso.getDescr());
            //procedure.setInt(3,(Integer)null);
            procedure.setInt(3, usuarioLogado.getId());
            //procedure.setInt(4, ) //******************Cleber não sei o que tem que colocar aki, é para pegar o novo id de acesso do usuario
            procedure.setString(5,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static boolean deletar(int codigo)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_ACESSO(?,NULL,NULL,NULL,NULL,?)}");
            procedure.setInt(1, codigo);
            //procedure.setString(2,null);
            //procedure.setInt(3,(Integer)null);
            //procedure.setInt(4, (Integer)null);
            //procedure.setInt(5, (Integer)null);
            procedure.setString(2,"");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;
        }catch(Exception excecao)
        {
            return false;
        }
    }

    public static Acesso selecionar(int codigo)
    {
        Acesso retorno = null;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAACESSO where ace_id="+codigo+"");
            if(resultado.next())
            {
                Acesso novoAcesso = new Acesso();
                novoAcesso.setId(codigo);
                novoAcesso.setDescr(resultado.getString("ace_descr"));
                retorno=novoAcesso;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static ArrayList<Acesso> selecionar()
    {
        ArrayList<Acesso> vetAcessos = new ArrayList<Acesso>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONAACESSO");
            while(resultado.next())
            {
                Acesso novoAcesso = new Acesso();
                novoAcesso.setId(resultado.getInt("ace_id"));
                novoAcesso.setDescr(resultado.getString("ace_descr"));
                vetAcessos.add(novoAcesso);
            }
            conexao.close();
            return vetAcessos;
        }catch(Exception excecao)
        {
            return null;
        }
    }

}
